// 封装前端浏览器对后端服务器接口发起请求的axios方法，比如get、post、put、delete这些方法，并在这些方法里面初始化token
import axios from "axios";
import store from "../../store/index";
//import { _ } from "core-js";

// let token = store.getters.getToken;
// let headers = {"token": token}

let token = ""
let headers = {}

// 初始化token
function initToken(){
 token = store.getters.getToken;
 headers = {"openToken": token}
}


// 下面封装axios的get\post\put\delete方法 用于向后端发起请求
// get、post、put、delete方法中如果请求返回状态码为200就继续否则抛出异常
let ApiReg = {
    get(url,params){
        initToken();
        return  new Promise((resolve,reject)=>{
            axios.get(url,{params:params,headers:headers}).then(res=>{
                //状态码判断
                if (res.data.code === 200){
                    resolve(res);
                }else {
                    reject("err");
                }
            }).catch(rej=>{
                reject(rej);
            })
        })
    },
    post(url,data){
        initToken();
        return  new Promise((resolve,reject)=>{
            axios.post(url,data,{headers}).then(res=>{
                if (res.data.code === 200){
                    resolve(res);
                }else {
                    reject("err");
                }
            }).catch(rej=>{
                reject(rej);
            })
        })
    },
    put(url,data){
        initToken();
        return new Promise((resolve,reject)=>{
            axios.post(url,data,{headers}).then(res=>{
                if(res.status === 200){
                    resolve(res);
                }
            }).catch(rej =>{
                reject(rej);
            })
        })
    },
    delete(url) {
        initToken();
        return new Promise((resolve,reject)=>{
            axios.delete(url, {headers}).then(res => {
                if (res.status === 200) {
                    resolve(res);
                }
            }).catch(rej => {
                reject(rej);
            })
        })

    }


}

export default ApiReg